using System;
using System.Collections;
using LibreriaBusiness;
using LibreriaCommon;
using LibreriaDS;
using LibreriaData;
using SOPLibData;

namespace SOPLibBusiness
{
    public abstract class boUsuarioRolBase : boBase, IDisposable
    {
        protected daUsuarioRol usuariorol = null;

        public boUsuarioRolBase(SecurityInfo securityInfo) : base(securityInfo)
        {
            usuariorol = new daUsuarioRol(securityInfo);
        }

        #region Dispose
        private bool disposed = false;

        public virtual void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        protected virtual void Dispose(bool disposing)
        {
            if (!this.disposed)
            {
                if (disposing)
                {
                    usuariorol.Dispose();
                }
                //liberar recursos no manejados
            }
            disposed = true;
        }

        ~boUsuarioRolBase()
        {
            Dispose(false);
        }
        #endregion Dispose

        public virtual dsUsuarioRol Find(int usuarioID, int rolID)
        {
            try
            {
                return usuariorol.FindByPrimaryKey(usuarioID, rolID);
            }
            catch (Exception ex)
            {
                throw new boException(ex);
            }
        }

        public virtual dsUsuarioRol.UsuarioRolRow FindRow(int usuarioID, int rolID)
        {
            try
            {
                return usuariorol.FindRow(usuarioID, rolID);
            }
            catch (Exception ex)
            {
                throw new boException(ex);
            }
        }

        public virtual dsUsuarioRol.UsuarioRolRow GetRow(dsUsuarioRol.UsuarioRolDataTable dt)
        {
            try
            {
                return (dsUsuarioRol.UsuarioRolRow)dt.Rows[0];
            }
            catch (Exception ex)
            {
                throw new boException(ex);
            }
        }

        public virtual dsUsuarioRol FindByEstado(Constants.EstadosEnum estado)
        {
            try
            {
                if (estado == Constants.EstadosEnum.Todos)
                {
                    return usuariorol.FindByEstado(System.DBNull.Value);
                }
                else
                {
                    return usuariorol.FindByEstado(estado);
                }
            }
            catch (Exception ex)
            {
                throw new boException(ex);
            }
        }

        public virtual void Update(dsUsuarioRol ds)
        {
            try
            {
                usuariorol.Update(ds);
            }
            catch (Exception ex)
            {
                throw new boException(ex);
            }
        }

    }
}

